<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script>
  var obj = {m: 2, n: 2};
  function add(a, b) {
    console.log(`${this.m * a} + ${this.n * b}`)
  }

  var add1 = add.bind(obj, 1, 1)();
  console.log('add1', add1);

  var add2 = add.bind(obj)(2, 2);
  console.log('add2', add2);

  var add3 = add.bind(obj, 1)(2);
  console.log('add3', add3);

  var add4 = add.call(obj, 1, 1);
  console.log('add4', add4);

  var add5 = add.call(obj, ...[2, 2]);
  console.log('add5', add5);

  var add6 = add.apply(obj, [1, 1]);
  console.log('add6', add6);

</script>
</body>
</html>
